<?php

function autoload($class) {
    if (class_exists($class))
        return;
    $array = preg_split('/([A-Z][^A-Z]*)/', $class, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
    $array = array_map('strtolower', $array);
    $wit = array_shift($array);
    switch ($wit) {
        case "fw":
            $files=S::cache()->class_files();
            for($i=0;$i<=1;$i++) {                
                foreach($files as $f) {
                    if(str_contains($f, $class) && file_exists($f)) {
                        $file = $f;
                        break;
                    }
                }
                if(isset($file)) { break; }
                else { $files=S::cache()->class_files(true); }
            }
            break;
        case "app":
            $file = APP . implode("/", $array) . ".php";
            break;
        case "pl":
            $file = FW."plugins".DS.$array[0].DS."pl".ucfirst($array[0]).".class.php";
            break;
        default:
            echo "Try to get unknow class: " . $class;
            exit();
            break;
    }
    if (file_exists($file)) {
        require_once($file);
    }
}
function explodeCase($string) {
    $array = preg_split('/([A-Z][^A-Z]*)/', $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
    $array = array_map('strtolower', $array);
    return $array;
}

function explodePoint($string) {
    $array = preg_split('/\./', $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
    return $array;
}

/**
 * Заменяет в строке символы ( \ или / ) на используемый в системе разделитель директории
 * @param string $dir
 * @example 
 * $dir = dsConvert("path/to\script"); Вернет "path/to/script" если сервер работает на Linux
 */
function dsConvert($dir) {
    if (is_string($dir)) {
        if (DS == "/") {
            return str_replace("\\", DS, $dir);
        }
        return str_replace("/", DS, $dir);
    }
    return $dir;
}
/**
 * Возвращает true, если начало строки $where начинается с $search
 * @param string $search Что искать
 * @param string $string Строка в которой искать
 * @return boolean
 */
function str_startwith($search,$string) {
    if(!is_string($search) || !is_string($string)) {
        return false;
    }
    $a = str_split($string,strlen($search));
    if($a['0']==$search) { return true; }
    return false;
}

/**
 *
 * @param type $string
 * @param type $part
 * @return boolean 
 */
function str_contains($string, $part) {
    if(str_ireplace($part, "", $string) == $string) {
        return false;
    }
    return true;
}

function doaction($var) {
    return "<input type='hidden' name='action' value='" . md5($var) . "'/>";
}

function isaction($var) {
    if (isset($_POST["action"]) && $_POST["action"] == md5($value)) {
        return true;
    }
    return false;
}